package main

import (
	"fmt"
	"os"

	"gitee.com/openeuler/PilotGo/sdk/logger"
	"gitee.com/openeuler/PilotGo/sdk/plugin/client"
	"github.com/gin-gonic/gin"
	"openeuler.org/PilotGo/container-plugin/config"
	"openeuler.org/PilotGo/container-plugin/database"
	"openeuler.org/PilotGo/container-plugin/httphandler"
)
// 定义插件的版本号
const Version = "0.0.1"
// 定义插件信息
var PluginInfo = &client.PluginInfo{
	Name:        "container",// 插件名称
	Version:     Version,    // 插件版本
	Description: "Container management plugin",// 插件描述
	Author:      "wangjunqi", // 插件作者
	Email:       "wangjunqi@kylinos.cn",// 插件作者邮箱
	Url:         "http://192.168.75.100:9998/plugin/container",// 插件URL
	// ReverseDest: "",// ReverseDest: "", // 预留的反向代理目标地址字段，目前为空
}
// 初始化数据库，如果失败则退出程序
func main() {
	fmt.Println("hello gala-ops")// 打印启动信息

	if err := database.MysqlInit(config.Config().Mysql); err != nil {
		fmt.Println("failed to initialize database")
		os.Exit(-1)
	}
// 初始化日志系统
	InitLogger()
// 创建Gin的HTTP服务
	server := gin.Default()
// 创建全局客户端，并注册插件处理程序
	GlobalClient := client.DefaultClient(PluginInfo)
	GlobalClient.RegisterHandlers(server)
// 初始化路由
	InitRouter(server)
// 启动HTTP服务，如果失败则记录错误并退出
	if err := server.Run(config.Config().Http.Addr); err != nil {
		logger.Fatal("failed to run server")
	}
}
// InitLogger 初始化日志系统
func InitLogger() {
	if err := logger.Init(config.Config().Logopts); err != nil {
		fmt.Printf("logger init failed, please check the config file: %s", err)
		os.Exit(-1)
	}
}
// InitRouter 初始化路由
func InitRouter(router *gin.Engine) {
	api := router.Group("/plugin/container/api")
	{
		// 注册部署Docker的POST请求处理函数
		api.POST("/deploy_docker", httphandler.DeployDocker)
	}
}
